package com.anhuanjia.tools.eao.util;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import org.springframework.util.StringUtils;

public class FindDateUtil {

	public List<String> findDates(Date dBegin, Date dEnd) {
		List<String> lDate = new ArrayList<String>();

		if (StringUtils.isEmpty(dBegin)) {
			Calendar begin = Calendar.getInstance();// 得到一个Calendar的实例
			begin.setTime(dEnd); // 设置时间为当前时间
			begin.add(Calendar.MONTH, -1);// 月份减1
			begin.add(Calendar.DATE, +1);// 日期加1
			Long startTime = begin.getTimeInMillis();
			Long endTime = dEnd.getTime();
			Long oneDay = 1000 * 60 * 60 * 24l;// 一天的时间转化为ms
			List<Object> dates = new ArrayList<>();
			Long time = startTime;
			int i = 0;
			while (time <= endTime) {
				Date d = new Date(time);
				DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
				dates.add(i, df.format(d));
				i++;
				time += oneDay;
			}
			for (int j = 0; j < dates.size(); j++) {
				lDate.add(dates.get(j).toString());
			}
		} else {
			SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
			lDate.add(sd.format(dBegin));
			Calendar calBegin = Calendar.getInstance();
			// 使用给定的 Date 设置此 Calendar 的时间
			calBegin.setTime(dBegin);
			Calendar calEnd = Calendar.getInstance();
			// 使用给定的 Date 设置此 Calendar 的时间
			calEnd.setTime(dEnd);
			// 测试此日期是否在指定日期之后
			while (calEnd.getTime().after(calBegin.getTime())) {
				// 根据日历的规则，为给定的日历字段添加或减去指定的时间量
				calBegin.add(Calendar.DAY_OF_MONTH, 1);
				lDate.add(sd.format(calBegin.getTime()));
			}
		}
		return lDate;
	}
}
